package com.bestcem.xm.txtanls.service;

import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.txtanls.grpc.service.param.chart.*;
import com.bestcem.xm.txtanls.service.dto.chart.*;

import java.util.List;

/**
 * 文本分析展示 service
 *
 * @author jy.zhao
 * @version 1.0
 * @date 2021/5/13 13:46
 **/
public interface ChartService {

    /**
     * 统计观点在原话中的匹配次数。
     *
     * @param baseChartParam 文本分析基础请求参数
     * @return ServiceResult<List> 观点统计结果
     * @author jy.zhao
     * @date 2021/5/13 13:47
     **/
    ServiceResult<ViewpointStatResultDTO> statViewpoint(BaseChartParam baseChartParam);

    /**
     * 查询观点好评差评top5
     * @param periodChartParam 文本分析基础请求参数
     * @return ServiceResult<ViewpointStatResultDTO> 观点Top5统计结果
     * @author jy.zhao
     * @date 2021/11/15 11:40
     **/
    ServiceResult<ViewpointTopDTO> viewpointTop(PeriodChartParam periodChartParam);

    /**
     * 统计观点评价
     *
     * @param viewEvaluateParam 观点评价变化请求参数
     * @return ServiceResult<ViewPointEvaluateDTO> 观点变化结果
     * @author jy.zhao
     * @date 2021/5/13 14:50
     **/
    ServiceResult<ViewPointEvaluateDTO> statViewpointEvaluate(ViewpointEvaluateParam viewEvaluateParam);

    /**
     * 统计情感细分，包括上期情感、本期情感、增长值
     *
     * @param baseChartParam 文本分析基础请求参数
     * @return ServiceResult<EmotionDetailDTO> 情感细分查询结果
     * @author jy.zhao
     * @date 2021/5/14 12:54
     **/
    ServiceResult<EmotionDetailDTO> statEmotion(BaseChartParam baseChartParam);

    /**
     * 获取情感趋势
     *
     * @param baseChartParam 文本分析基础请求参数
     * @return ServiceResult<List>
     * @author jy.zhao
     * @date 2021/5/14 13:59
     **/
    ServiceResult<List<EmotionDTO>> statEmotionTrend(BaseChartParam baseChartParam);

    /**
     * 获取词云图信息（关键词+关键词推荐量）
     *
     * @param workCloudParam 请求参数
     * @return ServiceResult<List>
     * @author jy.zhao
     * @date 2021/5/14 14:17
     **/
    ServiceResult<List<WorkCloudDataDTO>> statKeyword(WorkCloudParam workCloudParam);

    /**
     * 获取话题引用信息
     *
     * @param topicReferenceParam 请求参数
     * @return ServiceResult<List>
     * @author jy.zhao
     * @date 2021/5/14 14:32
     **/
    ServiceResult<TopicReferenceRateDTO> statTopicReference(TopicReferenceParam topicReferenceParam);

    /**
     * 话题分析
     * @param periodChartParam 周期图标查询
     * @return ServiceResult<TopicAnalysisDTO>
     * @author jy.zhao
     * @date 2021/11/17 14:56
     **/
    ServiceResult<TopicAnalysisDTO> statTopicAnalysis(PeriodChartParam periodChartParam);

    /**
     * 统计话题关联原话的次数和比率
     *
     * @param topicRelationParam 请求参数
     * @return ServiceResult<List>
     * @author jy.zhao
     * @date 2021/5/17 17:07
     **/
    ServiceResult<List<TopicRelationDTO>> statTopicRelation(TopicRelationParam topicRelationParam);

    /**
     * 话题提及率变化趋势
     * @param topicReferenceTrendParam 请求参数
     * @return ServiceResult<List<TopicStatDTO>> 返回
     * @author jy.zhao
     * @date 2021/7/27 18:47
     **/
    ServiceResult<List<TopicStatDTO>> statTopicReferenceTrend(TopicReferenceTrendParam topicReferenceTrendParam);

    /**
     * 观点情感分布变化趋势
     * @param topicReferenceTrendParam 请求参数
     * @return ServiceResult<List<ViewpointEvaluateStatDTO>> 返回
     * @author jy.zhao
     * @date 2021/7/27 20:04
     **/
    ServiceResult<List<ViewpointEvaluateStatDTO>> statViewpointEvaluateTrend(ViewpointEvaluateTrendParam topicReferenceTrendParam);
}
